import {PositionLocation} from '@/type/index'

export default interface CityInfo {
  address: string   // 以行政区划+道路+门牌号等信息组成的标准格式化地址
  formatted_addresses?: {
    // 结合知名地点形成的描述性地址，更具人性化特点
    recommend?: string  // 推荐使用的地址描述，描述精确性较高
    rough?: string   // 粗略位置描述
  }
  address_component: AddressComponent // 地址部件，address不满足需求时可自行拼接
  ad_info: {
    // 行政区划信息
    nation_code: string	//	国家代码（ISO3166标准3位数字码）
    city_code: string	//	城市代码，由国家码+行政区划代码（提出城市级别）组合而来，总共为9位
    name: string	//	行政区划名称
    location: PositionLocation
    nation: string	//	国家
    adcode: string	//	行政区划代码，规则详见：行政区划代码说明
    province: string	//	省 / 直辖市
    city: string	//	市 / 地级区 及同级行政区划，如果当前城市为省直辖县级区划，city与district字段均会返回此城市
    // 注：省直辖县级区划adcode第3和第4位分别为9、0，如济源市adcode为419001
    district?: string	//	区 / 县级市 及同级行政区划
  }

  address_reference?: AddressReference // 坐标相对位置参考
  poi_count: number  // 查询的周边poi的总数，仅在传入参数get_poi=1时返回
  pois?: Partial<Poi>[]
}


interface AddressReference {
  famous_area?: Area // 知名区域，如商圈或人们普遍认为有较高知名度的区域
  business_area?: Area  // 商圈
  town?: {
    // 	乡镇街道
    id:	string	//	地点唯一标识
    title?:	string	//	名称/标题
    location?: PositionLocation	//	坐标
    _distance?: number  // 此参考位置到输入坐标的直线距离
    _dir_desc?: string  // 此参考位置到输入坐标的方位关系，如：北、南、内
  }
  landmark_l1?: Area  // 一级地标，可识别性较强、规模较大的地点、小区等
  landmark_l2?: Area  // 	二级地标，较一级地标更为精确，规模更小
  street?: Area       // 街道
  street_number?: Area  // 	门牌
  crossroad?: Area  // 交叉路口
  water?: Area  // 水系
}


interface Area {
  id:	string	//	地点唯一标识
  title?:	string	//	名称/标题
  location?: Partial<PositionLocation>	//	坐标
  _distance?: number  // 此参考位置到输入坐标的直线距离
  _dir_desc?: string  // 此参考位置到输入坐标的方位关系，如：北、南、内
}


interface Poi {
  id:	string	//	地点（POI）唯一标识
  title:	string	//	名称
  address:	string	//	地址
  category:	string	//	地点分类信息
  location:	PositionLocation	//	提示所述位置坐标
  ad_info: AdInfo
  _distance: number
}

interface AdInfo {
  adcode:	number	//	行政区划代码
  province:	string	//	省
  city:	string	//	市，如果当前城市为省直辖县级区划，city与district字段均会返回此城市
  // 注：省直辖县级区划adcode第3和第4位分别为9、0，如济源市adcode为419001
  district:	string	//	区
}

export interface AddressComponent {
  nation: string    // 国家
  province: string	// 省
  city: string	//	市，如果当前城市为省直辖县级区划，city与district字段均会返回此城市
  //   注：省直辖县级区划adcode第3和第4位分别为9、0，如济源市adcode为419001
  district?: string	//	区，可能为空字串
  street?: string	//	街道，可能为空字串
  street_number?: string	//	门牌，可能为空字串
}
